package com.itheima.exception;

import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author liuyp
 * @since 2025/7/24
 */
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 编写一个方法，用于处理项目中出现的任何异常
     * 处理的流程是：
     *  如果mapper里有异常，会抛给Service
     *  service里如果有异常，就抛给controller
     *  controller里如果有异常，就抛给SpringBoot Web框架
     *  框架会将异常信息交给异常处理器：调用这个方法，将异常作为实参传递进来
     */
    @ExceptionHandler
    public Result handle(Exception e){
        //将异常信息打印出来
        log.error("系统出错", e);
        //给客户端返回结果提示
        return Result.error("系统正在维护，请稍后再试");
    }

    @ExceptionHandler
    public Result handleBusinessException(BusinessException e){
        log.error("系统异常", e);
        return Result.error(e.getMessage());
    }
}
